// 引入axios文件
import axios from 'axios'
import qs from 'qs'
import local from '../utils/local.js'
// 加载头部的进度条
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'

import { Message } from 'element-ui'

// 声明公共的地址
axios.defaults.baseURL = 'http://127.0.0.1:5000'
// 设置超时
axios.defaults.timeout = 10000

// 添加请求拦截器
axios.interceptors.request.use(config => {
  NProgress.start()
  // 在发送请求之前做些什么
  const token = local.get('token')
  if (token) {
    // Authorization   用户凭证，一般存储token
    config.headers.Authorization = token
  }
  return config
})

// 添加响应拦截器
axios.interceptors.response.use(res => {
  NProgress.done()
  // 把提示项提前处理
  const { code, msg } = res.data
  if (msg) {
    if (code === 0 || code === '00') {
      Message.success(msg)
    } else {
      Message.error(msg)
    }
  }
  // 对响应数据做点什么
  return res
})

// 对axios进行封装操作
export default {
  get(url, params) {
    return new Promise((resolve, reject) => {
      axios
        .get(url, { params })
        .then(res => {
          resolve(res.data)
        })
        .catch(err => {
          // 应该是统一处理报错
          reject(err)
        })
    })
  },
  post(url, query) {
    return new Promise((resolve, reject) => {
      axios
        .post(url, qs.stringify(query))
        .then(res => {
          resolve(res.data)
        })
        .catch(err => {
          // 应该是统一处理报错
          reject(err)
        })
    })
  }
}
